package com.ruoyi.student_club.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.ruoyi.student_club.domain.Club;
import com.ruoyi.student_club.dto.ClubAppDto;
import com.ruoyi.student_club.dto.ClubDto;
import com.ruoyi.student_club.vo.ClubVo;
import com.ruoyi.student_club.vo.RecommendVo;
import com.ruoyi.student_club.vo.app.ClubDetailVo;
import com.ruoyi.student_club.vo.app.ClubListVo;
import com.ruoyi.student_club.vo.app.ClubRecommendVo;

import java.util.List;

/**
 * 社团列表展示Service接口
 *
 * @author 无尤
 * @date 2022-01-14
 */
public interface IClubService extends IService<Club> {

    /**
     * 获取社团列表
     * @param page 分页信息
     * @param typeName 社团类型
     * @param clubName 社团名称
     * @return
     */
    Page<ClubVo> queryPage (Page<ClubVo> page, String typeName, String clubName);

    /**
     * 社团详情
     * @param page 分页信息
     * @return
     */
    Page<ClubVo> queryPage (Page<ClubVo> page);

    /**
     * 新增社团
     * @param clubDto 社团信息对象
     * @return
     */
    void save(ClubDto clubDto);

    /**
     * 修改社团
     * @param clubDto 社团信息
     */
    void update(ClubDto clubDto);

    /**
     * 删除社团
     * @param clubId 社团id
     */
    void remove(Long clubId);

    /**
     * 获取社团推荐列表
     * @return
     */
    List<ClubRecommendVo> getClubRecommendList();

    /**
     * 获取社团详情（app）
     * @param clubId
     * @return
     */
    ClubDetailVo getClubDetail(Long clubId);

    /**
     * 获取社团列表
     * @param dto 参数
     * @return
     */
    PageInfo getClubList(ClubAppDto dto);

    /**
     * 获取社团列表（添加社团推荐展示）
     * @return
     */
    List<RecommendVo> clubList();

    /**
     * 浏览数 +1
     * @param clubId 社团id
     */
    void updateRead(Long clubId);

}
